#!/bin/bash

# 如果设置了ROOT_PASSWORD环境变量，则使用它
if [ ! -z "$ROOT_PASSWORD" ]; then
    echo "root:$ROOT_PASSWORD" | chpasswd
fi

# SSH公钥处理
SSH_DIR="/root/.ssh"
AUTHORIZED_KEYS_FILE="$SSH_DIR/authorized_keys"

# 创建.ssh目录（如果不存在）
mkdir -p "$SSH_DIR"
chmod 700 "$SSH_DIR"

# 检查是否已有SSH密钥对
if [ ! -f "$SSH_DIR/id_rsa" ] || [ ! -f "$SSH_DIR/id_rsa.pub" ]; then
    echo "生成SSH密钥对..."
    ssh-keygen -t rsa -b 4096 -f "$SSH_DIR/id_rsa" -N "" -C "docker-build-container"
    chmod 600 "$SSH_DIR/id_rsa"
    chmod 644 "$SSH_DIR/id_rsa.pub"
    echo "SSH密钥对已生成"
else
    echo "使用现有的SSH密钥对"
fi

# 将公钥添加到authorized_keys（如果不存在）
if [ ! -f "$AUTHORIZED_KEYS_FILE" ]; then
    echo "创建authorized_keys文件..."
    cat "$SSH_DIR/id_rsa.pub" > "$AUTHORIZED_KEYS_FILE"
    chmod 600 "$AUTHORIZED_KEYS_FILE"
    echo "公钥已添加到authorized_keys"
else
    echo "authorized_keys文件已存在"
fi

# 如果设置了SSH_PUBLIC_KEY环境变量，则添加到authorized_keys
if [ ! -z "$SSH_PUBLIC_KEY" ]; then
    echo "添加自定义SSH公钥到authorized_keys..."
    echo "$SSH_PUBLIC_KEY" >> "$AUTHORIZED_KEYS_FILE"
    echo "自定义公钥已添加"
fi

# 显示公钥信息（用于连接）
echo "SSH公钥信息（用于连接）:"
cat "$SSH_DIR/id_rsa.pub"
echo ""

# 启动Docker daemon（如果使用独立daemon模式）
if [ ! -S /var/run/docker.sock ]; then
    echo "启动Docker daemon..."
    dockerd-entrypoint.sh &
    # 等待Docker daemon启动
    sleep 5
fi

# 启动SSH服务
echo "启动SSH服务..."
/usr/sbin/sshd -D &

# 显示Docker版本信息
echo "Docker版本信息:"
docker --version
docker-compose --version 2>/dev/null || echo "Docker Compose未安装"

echo "SSH服务已启动，可以通过端口22连接"
echo "容器内可以使用docker命令"

# 保持容器运行
wait
